#ifndef _TREE_PRINT_H
#define _TREE_PRINT_H

#include "tree_structs.h"
extern "C" struct ProgramInfo* root;

int tree_print(void);
void tree_print_mstl(struct MainStmtTagListInfo* pMSTL,int tab);
void tree_print_tag(struct Tag* tag,int tab);
void tree_print_stmt(struct StmtInfo* msti,int tab);
void tree_print_expr(struct ExprInfo* expr,int tab);
void tree_print_exprlist(struct ExprListInfo* list,int tab);
void tree_print_array_members(struct ArrMemListInfo* arrElements,int tab);
void tree_print_if(struct IfStmtInfo* pIfStmt,int tab);
void tree_print_stmtlist(struct StmtListInfo* stmtl,int tab);
void tree_print_elseiflist(struct ElseIfListInfo* pBlock,int tab);
void tree_print_elseif(struct ElseIfInfo* pElseif,int tab);
void tree_print_switch(struct SwitchStmtInfo* switchCase,int tab);
void tree_print_caselist(struct CaseStmtListInfo* list,int tab);
void tree_print_case(struct CaseInfo* pCase,int tab);
void tree_print_mainstmt(struct MainStmtInfo* pMsti,int tab);
void tree_print_funcdef(struct FuncDefInfo* fdef,int tab);
void tree_print_varlist(struct VarListInfo* vlist,int tab);
void tree_print_var(struct VarInfo* var,int tab);
void tree_print_classdef(struct ClassDefInfo* cdef, int tab);
void tree_print_classbody(struct ClassBodyElementList* pList,int tab);
void tree_print_classbodyelement(struct ClassBodyElement* pElement,int tab);

#endif
